﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using MJM.RPP.EntidadesNegocio;
using System.Data;
using System.Data.SqlClient;

namespace MJM.RPP.AccesoDatos
{
    public class PersonaTramiteAD
    {
        public List<PersonaTramiteEN> Listar(int Area, String ApellidoPaterno, String ApellidoMaterno, string dni)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_EMPOFI_ListaUsu", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmArea, prmPaterno, prmMaterno, prmDni;
            List<PersonaTramiteEN> lst = new List<PersonaTramiteEN>();
            SqlDataReader dr;
            try
            {
                prmArea = cmd.CreateParameter();
                prmArea.ParameterName = "@vOFIC_P_inCODOFI";
                prmArea.SqlDbType = SqlDbType.Int;
                prmArea.Value = Area;
                cmd.Parameters.Add(prmArea);

                prmMaterno = cmd.CreateParameter();
                prmMaterno.ParameterName = "@vEMP_chAPEMAT";
                prmMaterno.SqlDbType = SqlDbType.VarChar;
                prmMaterno.Value = ApellidoMaterno;
                cmd.Parameters.Add(prmMaterno);

                prmPaterno = cmd.CreateParameter();
                prmPaterno.ParameterName = "@vEMP_chAPEPAT";
                prmPaterno.SqlDbType = SqlDbType.VarChar;
                prmPaterno.Value = ApellidoPaterno;
                cmd.Parameters.Add(prmPaterno);

                prmDni = cmd.CreateParameter();
                prmDni.ParameterName = "@vEMP_chDNI";
                prmDni.SqlDbType = SqlDbType.VarChar;
                prmDni.Value = dni;
                cmd.Parameters.Add(prmDni);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                PersonaTramiteEN obj;

                while (dr.Read())
                {
                    obj = new PersonaTramiteEN();
                    try
                    {
                        obj.IDPersona = dr.GetInt32(0);
                        obj.NombrePersona = dr.GetString(1);
                        try
                        {
                            obj.Usuario = dr.GetString(2);
                        }
                        catch
                        {
                            obj.Usuario = "";
                        }
                        obj.DNI = dr.GetString(3);
                        obj.Oficina = dr.GetString(4);
                        obj.IdOficina = dr.GetInt32(5);
                        obj.Correo1 ="";
                        lst.Add(obj);
                    }
                    catch
                    {

                    }
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public List<PersonaTramiteEN> ListarCompleto(int Area)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_EMPOFI_ListaUsuV2", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmArea, prmPaterno, prmMaterno, prmDni;
            List<PersonaTramiteEN> lst = new List<PersonaTramiteEN>();
            SqlDataReader dr;
            try
            {
                prmArea = cmd.CreateParameter();
                prmArea.ParameterName = "@vOFIC_P_inCODOFI";
                prmArea.SqlDbType = SqlDbType.Int;
                prmArea.Value = Area;
                cmd.Parameters.Add(prmArea);

                prmMaterno = cmd.CreateParameter();
                prmMaterno.ParameterName = "@vEMP_chAPEMAT";
                prmMaterno.SqlDbType = SqlDbType.VarChar;
                prmMaterno.Value = "";
                cmd.Parameters.Add(prmMaterno);

                prmPaterno = cmd.CreateParameter();
                prmPaterno.ParameterName = "@vEMP_chAPEPAT";
                prmPaterno.SqlDbType = SqlDbType.VarChar;
                prmPaterno.Value = "";
                cmd.Parameters.Add(prmPaterno);

                prmDni = cmd.CreateParameter();
                prmDni.ParameterName = "@vEMP_chDNI";
                prmDni.SqlDbType = SqlDbType.VarChar;
                prmDni.Value = "";
                cmd.Parameters.Add(prmDni);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                PersonaTramiteEN obj;

                while (dr.Read())
                {
                    obj = new PersonaTramiteEN();
                    try
                    {
                        obj.IDPersona = dr.GetInt32(0);
                        obj.NombrePersona = dr.GetString(1);
                        try
                        {
                            obj.Usuario = dr.GetString(2);
                        }
                        catch
                        {
                            obj.Usuario = "";
                        }
                        obj.DNI = dr.GetString(3);
                        obj.Oficina = dr.GetString(4);
                        obj.IdOficina = dr.GetInt32(5);
                        lst.Add(obj);
                    }
                    catch
                    {

                    }
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public List<PersonaTramiteEN> ListaXNombre(String Nombre)
        {
            SqlConnection conn = new SqlConnection(Cadena.GetCadenaSoporte());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_EMPOFI_ListNombre", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            SqlParameter prmNombre;
            List<PersonaTramiteEN> lst = new List<PersonaTramiteEN>();
            SqlDataReader dr;
            try
            {
                prmNombre = cmd.CreateParameter();
                prmNombre.ParameterName = "@vNombreCompleto";
                prmNombre.SqlDbType = SqlDbType.VarChar;
                prmNombre.Value = Nombre;
                cmd.Parameters.Add(prmNombre);

                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                PersonaTramiteEN obj;

                while (dr.Read())
                {
                    obj = new PersonaTramiteEN();
                    try
                    {
                        obj.IDPersona = dr.GetInt32(0);
                        obj.NombrePersona = dr.GetString(1);
                        try
                        {
                            obj.Usuario = dr.GetString(2);
                        }
                        catch
                        {
                            obj.Usuario = "";
                        }
                        //obj.dni = dr.GetString(3);
                        obj.Oficina = dr.GetString(4);
                        obj.IdOficina = dr.GetInt32(5);
                        lst.Add(obj);
                    }
                    catch
                    {

                    }
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }

            return lst;
        }

        public List<PersonaTramiteEN> ListaGeneral(PersonaTramiteEN objPersonaTramiteEN)
        {
            SqlConnection conn = new SqlConnection(Cadena.CadenaTramite());
            SqlCommand cmd = new SqlCommand("sp_s_T_MAES_EMPOFI_ListaGeneral", conn);
            cmd.CommandType = CommandType.StoredProcedure;
            List<PersonaTramiteEN> lst = new List<PersonaTramiteEN>();
            SqlDataReader dr;
            try
            {
                if(objPersonaTramiteEN.Nombres == null)
                    objPersonaTramiteEN.Nombres = "";
                if (objPersonaTramiteEN.NombrePersona == null)
                    objPersonaTramiteEN.NombrePersona = "";
                if (objPersonaTramiteEN.ApePaterno == null)
                    objPersonaTramiteEN.ApePaterno = "";
                if (objPersonaTramiteEN.ApeMaterno == null)
                    objPersonaTramiteEN.ApeMaterno = "";
                if (objPersonaTramiteEN.DNI == null)
                    objPersonaTramiteEN.DNI = "";
                if (objPersonaTramiteEN.Usuario == null)
                    objPersonaTramiteEN.Usuario = "";
                if (objPersonaTramiteEN.Sexo == null)
                    objPersonaTramiteEN.Sexo = "";
                cmd.Parameters.Add(new SqlParameter("@vEMP_chNOMCOM", objPersonaTramiteEN.NombrePersona));
                cmd.Parameters.Add(new SqlParameter("@vEMP_chNOM", objPersonaTramiteEN.Nombres));
                cmd.Parameters.Add(new SqlParameter("@vEMP_chAPEPAT", objPersonaTramiteEN.ApePaterno));
                cmd.Parameters.Add(new SqlParameter("@vEMP_chAPEMAT", objPersonaTramiteEN.ApeMaterno));
                cmd.Parameters.Add(new SqlParameter("@vEMP_chDNI", objPersonaTramiteEN.DNI));
                cmd.Parameters.Add(new SqlParameter("@vUSUA_chLOGIN", objPersonaTramiteEN.Usuario));
                cmd.Parameters.Add(new SqlParameter("@vSEGU_btFLAELI", objPersonaTramiteEN.Eliminado));
                cmd.Parameters.Add(new SqlParameter("@vESTA_P_inEMP", objPersonaTramiteEN.Estado));
                cmd.Parameters.Add(new SqlParameter("@vEMP_chSEXO", objPersonaTramiteEN.Sexo));
                cmd.Parameters.Add(new SqlParameter("@vOFIC_P_inCODOFICON", objPersonaTramiteEN.IdOficina));
                cmd.Connection.Open();
                dr = cmd.ExecuteReader();
                PersonaTramiteEN obj;
                while (dr.Read())
                {
                    obj = new PersonaTramiteEN();
                    obj.ApeMaterno = dr.GetString(dr.GetOrdinal("MATERNO"));
                    obj.ApePaterno = dr.GetString(dr.GetOrdinal("PATERNO"));
                    obj.DNI = dr.GetString(dr.GetOrdinal("DNI"));
                    obj.Usuario= dr.GetString(dr.GetOrdinal("USUARIO"));
                    obj.RUC = dr.GetString(dr.GetOrdinal("RUC"));
                    obj.Nombres = dr.GetString(dr.GetOrdinal("NOMBRE"));
                    obj.NombrePersona = dr.GetString(dr.GetOrdinal("NOMBRECOM"));
                    obj.Cargo = dr.GetString(dr.GetOrdinal("CARGO"));
                    obj.Oficina = dr.GetString(dr.GetOrdinal("OFICINA"));
                    obj.Correo1 = dr.GetString(dr.GetOrdinal("MAIL"));
                    obj.CorreoParticular = dr.GetString(dr.GetOrdinal("MAILPAR"));
                    obj.Telefono = dr.GetString(dr.GetOrdinal("TELEFONO"));
                    obj.Nacimiento = dr.GetString(dr.GetOrdinal("NACIMIENTO"));
                    obj.Facebook = dr.GetString(dr.GetOrdinal("FACE"));
                    obj.Twitter = dr.GetString(dr.GetOrdinal("TWITTER"));
                    obj.Contrato = dr.GetString(dr.GetOrdinal("CONTRATO"));
                    obj.IDPersona = dr.GetInt32(dr.GetOrdinal("ID"));
                    obj.IdCargo = dr.GetInt32(dr.GetOrdinal("IDCARGO"));
                    obj.IdContrato = dr.GetInt32(dr.GetOrdinal("IDCONTRATO"));
                    obj.IdOficina = dr.GetInt32(dr.GetOrdinal("IDOFICINA"));
                    obj.Eliminado = dr.GetInt32(dr.GetOrdinal("FLAG"));
                    if (dr.GetString(dr.GetOrdinal("EMP_chESFUNC"))=="SI")
                        obj.EsFuncionario = true;
                    else
                        obj.EsFuncionario = false;
                    lst.Add(obj);
                }

                cmd.Connection.Close();
                cmd.Dispose();
                conn.Dispose();
            }
            catch (Exception ex)
            {
                cmd.Dispose();
                conn.Dispose();
            }
            return lst;
        }
    }
}
